This invention relates to packet segmentation and reassembly at a driver-level functionality associated with a network interface device.
One of the functions of a transport protocol is the reassembly of received segments of data from the underlying network layers and the segmentation of data received from upper layers of the protocol stack into units of data which are suitable for transmission by the underlying network.
The CPU overhead of both of these operations has long been understood to be costly. Recently network interface hardware (such as that manufactured by Neterion Inc.) has been introduced which is capable of performing these operations on behalf of the host CPU and in accordance with the Microsoft Windows network task offload architecture. The HP Whitepaper, “TCP Segmentation Offload (TSO) Performance on HP rp4440 Servers”, dated August 2004 investigates the improvement in performance available when a TSO implementation is used, as compared with a conventional non-offloaded segmentation architecture.
However, another approach supposes that the real cost in CPU overhead is not the segmentation or reassembly operations themselves, but the repeated traversal of a complex multi-layered software protocol stack. Rather than introducing complex hardware to perform segmentation and reassembly, it would therefore be desirable to perform both these functions in software outside the protocol stack so as to reduce the number of traversals of the protocol stack both on transmission and reception and hence the per-packet overhead of protocol processing.
Recently the utility of this approach has been recognised by the maintainers of the Linux kernel and a generic transmit segmentation offload module has been implemented which performs this function at the lowest layer of the generic kernel network stack. This development is detailed in the article “Linux Generic Segmentation Offload” available at http://lwn.net/Articles/189970 and dated June 2006.